#include "UI.h"
#include "..\base\Engine.h"
#include "..\utils\Log.h"
#include "..\utils\StringUtils.h"
#include "UIDialog.h"
#include "UICheckbox.h"
#include "UITextbox.h"

namespace ds {

namespace dialog {

Vec3 getVec3(UIDialog* dialog,uint32 id1,uint32 id2,uint32 id3) {
	Vec3 ret;
	ret.x = getFloat(dialog,id1);
	ret.y = getFloat(dialog,id2);
	ret.z = getFloat(dialog,id3);	
	return ret;
}

bool getBool(UIDialog* dialog,uint32 id,bool defaultValue) {
	if ( dialog->getCheckbox(id) != 0 ) {
		return dialog->getCheckbox(id)->getValue();
	}	
	return defaultValue;
}

float getFloat(UIDialog* dialog,uint32 id,float defaultValue) {
	if ( dialog->getTextbox(id) != 0 ) {
		return string::from_string<float>(dialog->getTextbox(id)->getValue());
	}
	return defaultValue;
}

void setVec3(UIDialog* dialog,const Vec3& v,uint32 id1,uint32 id2,uint32 id3) {
	setFloat(dialog,v.x,id1);
	setFloat(dialog,v.y,id2);
	setFloat(dialog,v.z,id3);
}

void setFloat(UIDialog* dialog,float value,uint32 id) {	
	if ( dialog->getTextbox(id) != 0 ) {
		dialog->getTextbox(id)->setValue(string::to_string(value));
	}
}

Color getColor(UIDialog* dialog,uint32 id1,uint32 id2,uint32 id3,uint32 id4) {
	Color c;
	c.r = getFloat(dialog,id1);
	c.g = getFloat(dialog,id2);
	c.b = getFloat(dialog,id3);
	c.a = getFloat(dialog,id4);
	return c;
}

void setColor(UIDialog* dialog,const Color& v,uint32 id1,uint32 id2,uint32 id3,uint32 id4) {
	setFloat(dialog,v.r,id1);
	setFloat(dialog,v.g,id2);
	setFloat(dialog,v.b,id3);
	setFloat(dialog,v.a,id4);
}

}

}
